System and method for external control of a portable processing system

ABSTRACT

A game controller is provided for controlling a portable processing system externally. The game controller may connect directly to the portable processing system or may connect to the portable processing system through an interface device. The interface device may patch memory locations of a ROM cartridge which contain a pointer to a memory location of the portable processing system which stores input from the built-in controls of the portable processing system. By matching these locations, input from the external controller may be provided to the portable processing system. Alternatively, a device which includes software executable by the portable processing system and external controls may be provided to operate in conjunction with the portable processing system. The software may be programmed to use input from the external controls instead of the built-in controls of the portable processing system.

RELATED APPLICATIONS

[0001] This application claims the benefit under Title 35 U.S.C. §119(e) of U.S. Provisional Application Serial No. 60/382,206, filed May 21, 2002, entitled “System and Method for External Control of a Game System” by Kern Corrigan, the contents of which are hereby incorporated by reference.

FIELD OF THE INVENTION

[0002] The present invention relates to portable processing systems and, more particularly, to a system and method for controlling a portable processing system using an external controller.

BACKGROUND OF THE INVENTION

[0003] Handheld game systems have become very popular and allow users to play video games on a small and easily transportable device. An example of a typical handheld game system is illustrated in FIG. 1. An example of a typical commercially available handheld video game system is the Gameboy Advance available from Nintendo Co., Ltd. of Kyoto, Japan. In FIG. 1, game system 1 includes controls built into case 2 that allow a user to interact with and control a video game. The controls may include one or more buttons 3, 5, 7, 9 that perform various functions related to operation of the video game system. The controls may also include a directional pad 13 that provides control for operation of the video game system. Display screen 7 displays the video game to a user.

[0004] Typically, handheld game systems, such as the one illustrated in FIG. 1, include a processor that executes one or more video games. These games are typically computer programs stored on cartridges and, when inserted into a handheld game system, are executed by the processor. Typically, cartridges may be inserted in and removed from the handheld game system to allow the user to play a variety of video games, each of which may be stored on a different cartridge.

[0005] As illustrated in FIG. 1, cartridge 17 may be inserted into cartridge receiving slot 15 of game system 1. Cartridge 17 generally includes a read-only memory (ROM) that stores computer instructions and data of a video game. Additionally, some handheld game systems may include a link port (not shown) which allows a user to connect to other game systems and play video games in a multi-player mode.

[0006] One drawback to such handheld game systems is that the built-in controls, sometimes referred to as primary controls, such as the buttons 3, 5, 7, 9 and directional pad 13, are typically kept very small to maintain the portability of the game system. Consequently, it may be difficult for some users to effectively use the small controls. Additionally, the built-in controls may be inadequate for other reasons. For example, some video games are better suited for other types of controllers such as, for example, a joystick, wheel, or other special controllers, rather than the built-in controls of the video game system. Further, physically disabled users may not be able to use the built-in controls at all and may require specially designed controllers, such as foot pedals or sip-puff controllers, to play video games.

SUMMARY OF THE INVENTION

[0007] A system and method are provided which allow external control of a portable processing system, such as a handheld video game system. According to one embodiment of the invention, addresses locations of a ROM which stores software for execution by the portable processing system may be patched, causing the portable processing system to substitute external game controller input for input from the built-in controls of the portable processing system. According to another embodiment, software is provided for execution by the portable processing system which causes the portable processing system to receive input from the external controller in place of the built-in controls.

[0008] A method is provided for controlling a portable processing system externally. According to one embodiment of the invention, the method comprises acts of providing an external controller, the external controller being adapted to control a portable processing system and providing for a coupling of the external controller to the portable processing system.

[0009] According to another embodiment of the invention an apparatus for controlling a portable processing system externally is provided. The apparatus comprises an external game controller configured to transfer control signals to control a portable processing system, the external game controller having an output that provides control signal information to the portable processing system.

[0010] According to yet another embodiment of the invention a computer readable medium is provided, the computer readable medium having encoded thereon computer instructions which when executed by a portable processing system perform a method. The method comprises acts of causing the portable processing system to accept input from an external controller and causing the portable processing system to process the input from the external controller.

[0011] According to another embodiment of the invention, a method for operating a portable processing system is provided comprising acts of providing a device operatively connectable to the portable processing system, providing, on the device, a data storage medium for storing a computer program executable by the portable processing system, and providing, on the device, game controls for operating the portable processing system.

[0012] According to another embodiment of the invention, an apparatus is provided that is configured to control operation of a portable processing system. The apparatus comprises a device operatively connectable to the portable processing system and the device includes a data storage medium configured to store computer program instructions executable by the portable processing system and an external game controller for operating the portable processing system.

[0013] According to another embodiment of the invention, an apparatus is provided that comprises a housing adapted to receive a portable processing system, the housing operatively connectable to the portable processing system, wherein the housing includes a computer software program executable by the portable processing system, and wherein the shape of the housing relates to a theme of the computer software program.

[0014] According to another embodiment of the invention, an apparatus is provided that comprises a housing adapted to receive a portable processing system, the housing forming an integral part of the portable processing system, such that at least a portion of a screen of the portable processing system is visible when the portable processing system is connected to the housing.

[0015] According to another embodiment of the invention, a method is provided for operating a portable processing system with an external controller, the portable processing system having built-in controls, the portable processing system capable of receiving data from a data storage medium, the data storage medium being removably connectable to the portable processing system. The method comprises acts of detecting a first access request by the portable processing system for data stored at a first address of the data storage medium, providing to the portable processing system, in response to the first access request, a second address of the data storage medium instead of the data stored at the first address of the data storage medium, detecting a second access request by the portable processing system for data stored at the second address of the data storage medium, and providing to the portable processing system, in response to a second access request by the portable processing system for data stored at the second address of the data storage medium, input from the external controller.

[0016] According to another embodiment of the invention, an apparatus electrically connected to a portable processing system is provided, the portable processing system having built-in controls, the portable processing system capable of receiving data from a data storage medium, the data storage medium being removably connectable to the portable processing system. The apparatus comprises means for detecting a first access request by the portable processing system for data stored at a first address of the data storage medium, means for providing to the portable processing system, in response to the first access request, a second address of the data storage medium instead of the data stored at the first address of the data storage medium, means for detecting a second access request by the portable processing system for data stored at the second address of the data storage medium, and means for providing to the portable processing system, in response to a second access request by the portable processing system for data stored at the second address of the data storage medium, input from the external controller.

BRIEF DESCRIPTION OF THE DRAWINGS

[0017] Further features and advantages of the present invention as well as the structure and operation of various embodiments of the present invention are described in detail below with reference to the accompanying drawings.

[0018]FIG. 1 is a diagram of a typical portable processing system;

[0019]FIG. 2 is a block diagram of an interface system according to one embodiment of the invention;

[0020]FIG. 3 is a block diagram of an interface system that couples a typical game cartridge and a typical portable processing system, according to one embodiment of the invention;

[0021]FIG. 4 is a flow chart illustrating operation of an interface system according to one embodiment of the invention;

[0022]FIG. 5 is a perspective diagram of an interface system that couples an external controller and a portable processing system, according to one embodiment of the invention;

[0023]FIG. 6 is a perspective diagram of an interface system that couples an external controller and a portable processing system, according to one embodiment of the invention;

[0024]FIG. 7 is a perspective diagram of an interface system that couples an external controller and a portable processing system, according to one embodiment of the invention;

[0025]FIG. 8 is a perspective diagram of a device coupled to a portable processing system, according to one embodiment of the invention;

[0026]FIG. 9 is a perspective diagram of a device coupled to a portable processing system, according to one embodiment of the invention; and

[0027]FIG. 10 is a flow chart illustrating operation of a device with a portable processing system, according to one embodiment of the invention.

DETAILED DESCRIPTION

[0028] One illustrative embodiment of the invention for externally controlling a portable processing system is depicted generally in FIG. 2. FIG. 2 shows an interface 21 coupled to a memory 23. Memory 23 may include any type of volatile or non-volatile memory. For example, memory 23 may include static random access memory (SRAM), Flash Memory, dynamic random access memory (DRAM), eraseable programmable read only memory (EPROM), electrically eraseable programmable read only memory (EEPROM), hardware registers, or any combination of these types of memories.

[0029] Interface 21 is also connected to secondary controller connector 25, which is capable of connecting an external controller, such as a game pad, joystick or wheel, to the interface device and which may be capable of providing input from the external controller to the interface device. Cartridge connector 27 allows game cartridge, such as a read only memory (ROM) having computer instructions for a video game. Portable processing connector 29 provides an electrical connection between interface 21 and a portable processing system (e.g., a handheld videogame system such as the Gameboy Advance system). Portable processing connector 29 may connect to the portable processing system (not shown) through, for example, a cartridge slot of the portable processing or a link port of the portable processing system. Portable processing system connector 29 may alternatively connect to the portable processing system through a serial port, parallel port, or network port of the portable processing system. Many other ways of connecting interface 21 and the portable processing system will occur readily to one of ordinary skill in the art and are intended to be within the scope of the invention.

[0030] Interface 21 may allow a user to control a video game using an external controller instead of the built-in or primary controls of the portable processing system. Interface 21 may provide the following functions. First, interface 21 may provide logic that allows an external controller to interface with an internal bus of a portable processing system. to Portable processing systems include handheld video game systems and other portable non-gaming systems (e.g., such as, for example, a personal digital assistant (PDA), a mobile telephone, or a hybrid PDA and mobile telephone). Handheld video game systems typically include built-in controls designed primarily for playing video games. Examples of such systems include the Gameboy Advance system and Gameboy system, available from Nintendo Co. Ltd. of Kyoto, Japan, and the GameGear system available from Sega Corporation of Tokyo, Japan. Portable non-gaming systems that may benefit from the use of an external controller include devices such as personal digital assistants (PDAs) and mobile telephones.

[0031] Portable non-gaming systems also include built-in controls, but such controls are not typically designed for use playing video games. For example, in the case of a PDA, such built-in controls may include a stylus and touch-sensitive pad which may be designed primarily for data entry. In the case of a mobile telephones, the built-in controls may include a standard telephone keypad and may be designed primarily for use in dialing. Interface 21 may interface with both handheld video game systems and with portable non-gaming systems. Interface 21 may also interface with console video game systems, such as the Nintendo Entertainment System, Super Nintendo Entertainment System, the Nintendo 64, or the Game Cube, available from Nintendo Co. Ltd. of Kyoto, Japan, the Playstation or Playstation 2 available from Sony Corporation of Tokyo, Japan, or the XBox available from Microsoft Corporation of Redmond, Wash. The game systems listed above are 30 provided as examples only, and it should be appreciated interface 21 could interface with many other handheld or console game systems, as well as any type of portable non-gaming system, and the invention is not limited to any particular game system or portable non-gaming system.

[0032] A second function provided by interface 21 includes determining whether information should be provided to the portable processing system from the game cartridge ROM or whether data should be provided by the interface system from elsewhere, such as memory 23 or registers of interface 21. For example, when a particular game cartridge address is requested by the portable processing system, interface 21 may provide data from memory 23 or a register of interface 21 instead of the data stored at the requested address of the game cartridge. Interface 21 may receive a game cartridge address from the portable processing system, indicating a request for data stored at that game cartridge address. If the address is a patched address, that is, if the address is an address for which interface 21 will provide data from a location other than the address of the game cartridge provided by the portable processing system, then the portable processing system may be requesting a pointer to the location at which input from the built-in controls of the portable processing system is stored. Accordingly, interface 21 may provide logic for determining if any addresses received from the portable processing system match any of the patched addresses.

[0033] Third, interface 21 may provide an unused address of the game cartridge as a location of secondary controller input to the portable processing system instead of providing an address, stored on the game cartridge, of the primary controller input in portable processing system memory or in a buttons register of the portable processing system. The buttons register of the portable processing system may be a register that is hardwired to the built-in controls of the portable processing system. For example, the buttons register may comprise a set of flip-flops, each of which latches when a user presses or releases a corresponding button or combination of buttons. The buttons register may share a common memory-map with the rest of the memory of the portable processing system, and is thus addressable by the game software stored on a cartridge ROM. That is, the buttons register may be within the same address space as the main memory of the portable processing system. The buttons register may also be a register which is updated by the processor based on input received from the built-in controls. Interface 21 may also provide input values from the secondary controller to the portable processing system, to be processed by the processor of the portable processing system.

[0034] Interface 21 may include its own memory separate from memory 23 for storing patch information and built-in controller input. For example, interface 21 may provide patch registers that store addresses of the ROM cartridge which can be patched. That is, interface 21 may store game cartridge addresses that may be patched to other memory locations. Data stored at such game cartridge addresses may be an address in portable processing system memory at which built-in controller input is stored. This address may be the address of the buttons register or an address in the RAM of the portable processing system. Thus, interface 21 may detect a request by the portable processing system for data stored at such registers by comparing the addresses requested by the portable processing system with the addresses stored in the patch registers.

[0035] Interface 21 may also receive input from an external controller. For example, interface 21 may translate input signals received from the external controller to an integer value which may then be provided to the portable processing via the data bus of the portable processing. For example, an external controller may be connected to a register of interface 21 through secondary controller connector 25. Such a register may be used to store input from the external controller. The register may include a set of flip-flops, such that each flip-flop corresponds to a possible input value of the external controller. For example, one flip-flop may correspond to button A of the external controller, while another flip-flop corresponds to an UP button of the direction pad of the external controller. Accordingly, these flip-flops may change state when the corresponding button is pressed or released by a user. The register may be either active low or active high. That is, in an active low register, a ‘0’ bit output of a flip-flop indicates that a corresponding button is pressed, while a ‘1’ bit output of a flip-flop indicates that a corresponding button is not pressed. In an active high register, a ‘0’ bit indicates that a corresponding button is not pressed, while a ‘1’ bit output indicates that a corresponding button is pressed. The state of the register may be converted into a binary integer, where the state of each flip-flop of the register is the value of one of the bits in the binary integer. The integer may then be provided to the portable processing system on the data bus of the portable processing system.

[0036] Interface 21 may be implemented using a programmable logic device (PLD), such as a programmable logic array (PLA) or a field programmable gate array (FPGA). Alternatively, interface 21 may be implemented as an application specific integrated circuit (ASIC). It should be appreciated that interface 21 may include additional components not shown or may have different arrangements than outlined in the drawings.

[0037] Interface 21 may be coupled to a portable processing system through portable processing system connector 29. Portable processing connector 29 may be, for example, a connector which connects to a portable processing system through the cartridge socket of the portable processing system, the link port of the portable processing system, or any other port provided by the portable processing system, such as a USB port or any other serial or parallel port. If interface 21 occupies the cartridge socket of a portable processing system, interface 21 may provide another socket, such as cartridge connector 27 which connects to the game cartridge (not shown) and which allows data to be transferred from the game cartridge to the portable processing system. Devices (e.g., a portable processing system) may receive data from the ROM of the game cartridge through interface 21. Alternatively, the contents of the ROM of the game cartridge may be downloaded into memory 23 and addresses of the ROM can be translated into addresses of memory 23. Consequently, use of the game cartridge may not be necessary.

[0038] Secondary controller connector 25 provides a connector for an external secondary controller. Secondary controller connector 25 may provide input signals received from the controller to interface 21, which may then be stored in a register of interface 21 as discussed above.

[0039] Memory 23 may store patch information for different games. That is, memory 23 may store, for a plurality of game cartridges, which ROM address locations should be patched for a particular game cartridge.

[0040] Memory 23 may also store software for execution by interface 21. Memory 23 may also store software that, when executed by a portable processing system, allows a user to enter new patch information for new games, edit and/or delete patch information, assign names to, and group the patch information. Further, memory 23 may store other information, such as, for example, a logo for a splash screen to be displayed upon start up. Also, memory 23 can be used to store video games, such as the contents of the ROM of a video game cartridge. It should be appreciated that memory 23 described above may store any type of data, and the invention is not limited to storing any particular data.

[0041] An example operation of an interface system according to one embodiment (e.g., the interface system shown in FIG. 2) is described below with reference to FIG. 3. Portable processing system 50 includes a cartridge connector 32 that receives a game cartridge, a microprocessor 40 that processes instructions stored on the game cartridge, and a memory 42 (e.g., a random access memory) which may be used to store data related to the execution of a game or other software. Portable processing system 50 also includes an address bus 38 for transferring addresses, a data bus 37 that transfers data between microprocessor 40, memory 42, and cartridge connector 32, and a control bus 34 that transfers control information (e.g., microprocessor status) between microprocessor 40, memory 42, and cartridge connector 32.

[0042] Portable processing system 50 may be, for example, a handheld game system such as the Gameboy Advance or a portable non-gaining system, such as a PDA or mobile telephone.

[0043] According to one aspect of the invention, an interface system 30 is provided that includes a connector 31 for coupling interface 33 to cartridge connector 32 of portable processing 50. System 30 also includes an interface 33 that couples an external controller 37 to system 50. Interface 33 may include, for example, patch registers 39. Interface system 30 may further include memory 43. A game cartridge 35 external to system 30 may also be provided that includes a ROM 36 and which connects to interface 33 of interface system 30. For example, game cartridge 35 may be a conventional game cartridge having game program instructions executable by portable processing system 50. In the example shown in FIG. 3, ROM 36 has only eight address locations. However, it should be appreciated that ROM 36 may have any number of address locations and the invention is not limited to any particular number of locations. External controller may also connect to interface 33 through a connector to provide input signals to interface 33.

[0044] In operation, ROM 36 may include one or more instructions that cause portable processing system 50 to retrieve input from the built-in controls of the portable processing system. This input may be stored at a particular memory location of the portable processing system. This particular memory location may be, for example, a special hardwired buttons register, may be an address location in memory 42, or may be a standard main memory location in which all input from a controller is stored.

[0045] For example, the processor 40 of portable processing system 50 may respond to instructions that cause portable processing system 50 to retrieve data stored at a particular address location. For example, address location 000 of ROM 36 may include an instruction that directs portable processing system 50 to retrieve game controller input data from the address location or pointer location stored at address location 001 of ROM 36. The address or pointer stored at address location 001 of ROM 36 may be the address of the buttons register or a pointer to the address location in memory 42 where input from the built-in controls is stored. Pointers to the address location where input from the built-in controls is stored may be stored at several different address locations in ROM 36. For example, such pointers may be stored at address location 001, address location 100, and address location 111. It should be understood that the address locations are given by way of example only, and any address locations on ROM 36 could be used for this purpose.

[0046] Different game cartridges may store such pointers at different address locations in the ROM. That is, the locations of such pointers on a ROM may vary, depending on the type of game cartridge. For example, a ROM for a baseball video game cartridge may store such pointers at address locations 011, 110, and 111, while a ROM for a football video game cartridge may store such pointers at address locations 000 and 010. Consequently, patch registers 39 may store the ROM address locations of these pointers. For each different cartridge, different ROM address locations may be loaded in to patch registers 39 from memory 43. For example, upon startup of the portable processing system, interface system 30 may recognize the game cartridge to which it is currently connected, find the patch information (e.g., one or more patch addresses) for the cartridge in memory 43, and transfer these patch addresses into patch registers 39.

[0047] For each game cartridge, one or more addresses of the cartridge to be patched may be determined by analyzing the cartridge to determine which memory locations of the game cartridge ROM store a pointer to the memory location or register of the portable processing system that stores input from the built-in controls of the portable processing system. Each memory location which stores such a pointer should be patched.

[0048] Also, as mentioned above, patch editor software stored in memory 43 may be executed to allow a user to enter new patch information for a particular game cartridge, delete patch information for a particular game cartridge, or edit patch information for a particular game cartridge. It should be appreciated that a user nay cause this software to be executed by, for example, starting up the portable processing system 50 with interface system 30 coupled to the portable processing system, but with no game cartridge coupled to interface system 30. Alternatively, upon startup of the portable processing system, interface system 30 may provide a menu which gives the user the option of executing the patch editor software or executing software from the game cartridge. If the user selects the patch editor option, interface system 30 will cause portable processing system 50 to execute the patch editor software. If the user selects the game cartridge software option, the appropriate patch information may be transferred from memory 43 to patch registers 39 and execution of the game cartridge software may begin. Memory 43 may store patch information for many different game cartridges.

[0049] Additionally, according to one embodiment, interface system 30 may include a bypass (not shown), which allows software on a game cartridge (e.g., game cartridge 35) to be executed by portable processing system 50 as if the game cartridge were coupled directly to portable processing system 50, instead of being coupled to portable processing system 50 through interface system 30. That is, when in bypass mode, the interface system does not patch address locations of game cartridge 35 and does not provide external controller input to portable processing system 50. Thus, in bypass mode, the built in controls of portable processing system 50 are operable and the external controller is not operable. The bypass may be activated via software, such as providing an option on the above described menu system which allows a user to select bypass mode. Alternatively, the bypass mode may be entered via hardware, for example, by providing a switch which selects either the normal operating mode of interface system 30 or the bypass mode of interface system 30. Such a switch may be activated by either automatically or may be activated by a user.

[0050] Interface system 30 monitors addresses requested by portable processing system 50. Such addresses are provided on address bus 38 through cartridge connector 32. For instance, if portable processing system 50 requests access to one of the ROM addresses stored in patch registers 39, interface 33 may provide a different address to portable processing system 50 on data bus 37 instead of providing data stored at the requested address of the ROM (i.e., the pointer to the location at which built-in controller input is stored). The memory address provided by interface 33 may be an unused address of ROM 36. The unused address serves as a marker for interface system 30, such that interface system 30 provides external controller input to portable processing system 50, when the unused address is provided by portable processing system 50 on the address bus. The unused address of the ROM may be determined by analyzing the game cartridge to find an unused address. This unused address may be stored in memory 43 and loaded into a register along with the patch information for the game cartridge, upon startup of the portable processing system and recognition of the game cartridge. In an alternative embodiment, an address near the end of the game cartridge address space may be used for all game cartridges, because it is not likely that the software will occupy the entire game cartridge address space.

[0051] However, if an address near the end of game cartridge address space is provided as the unused address, it is possible that some game cartridges may actually use this address location to store data. In this situation, the portable processing system may sometimes request data stored at the “unused” address as a result of previously attempting to access one of the patched memory locations of the game cartridge. That is, the portable processing system may be caused to request data at the “unused” address by interface system 30. However, at other times, the portable processing system will request data stored at this “unused” address as a result of normal execution of the video game software. That is, the portable processing system will issue a real request for data stored at this address location. At these times, it is desirable to actually provide the data stored on the game cartridge ROM at that address location instead of providing input from the external controller.

[0052] In one embodiment of the invention, to avoid situations in which external controller input is provided by interface system 30 when a real request for the ROM data is provided by the portable processing system. External controller input, upon detection of the “unused” address of the game cartridge ROM, is provided only if there was a request for data at one of the patched memory locations in the address request directly preceding the current request, within some tolerance. That is, external controller input is only provided if a request for one of the patched addresses was received within a tolerance of five or ten requests before the current request for the “unused” address location. The tolerance serves as a number of access requests to the ROM from the portable processing system after an access request by the portable processing system for one of the patched ROM address locations, but before an address request for the “unused” address location of the ROM. For example, when using a tolerance of five requests and when interface system 30 receives a request for the “unused” address location of the ROM, external controller input may be provided to the portable processing system on the data bus if one of the previous five access requests by the portable processing system was an access request for one of the patched ROM locations. Otherwise, the actual data stored at the “unused” address location of the ROM is provided to the portable processing system on the portable processing system's data bus. Although a tolerance of five results is discussed above, it should be appreciated that any suitable tolerance may be used. For example, a tolerance of one request could be used if it is known that an access request for the “unused” address requests will directly follow an access request for one of the patched address locations. The selected tolerance may depend in part on the compiler used to compile the game cartridge software. For example, the compiler may cause several pointers to be loaded in a row before these pointers are utilized, or the compiler may cause pointers to be loaded only when they are needed.

[0053] As a result of providing this unused address to portable processing system 50, portable processing system 50 may request the data stored at the unused address of ROM 36. This may be performed, for example, by providing the unused address on address bus 38. However, many other methods of providing the unused address to portable processing 50 may be used. Interface 33 may detect the request of such an address and provide input from the secondary controller instead of data stored at the requested address of ROM 36. If portable processing system 50 requests access to a particular address of a storage location in ROM 36 through address bus 38, and interface 33 determines that this address is not stored in any of the patch registers 39, interface 33 may fetch the data at that address of a storage location in ROM 36 and send the fetched data to portable processing system 50 through data bus 37, without modifying or replacing the data. In this manner, input from the external controller is substituted for input from the built-in controls of the portable processing system.

[0054]FIG. 4 is a flow chart showing a process according to one embodiment of the invention of operating a portable processing system with an interface system, such as interface system 30. At step 401, the portable processing system 50 and interface system 30 are powered up by, for example, turning on a power switch of portable processing system 50. Portable processing system 50 may be battery powered for portability, but also may be capable of using grid power (e.g., from a wall socket). Interface system 30 may receive power from the portable processing system or may include its own power source, such as a battery.

[0055] At step 403, the interface system recognizes the cartridge that is currently connected, by, for example, reading header information stored on the ROM of the game cartridge. Alternatively, the user may select from a menu provided by the interface system. If patch information for a game is not available for a particular game cartridge, a screen may be displayed directing the user to a location (e.g., an Internet web page) where such patch information may be obtained. At steps 405 and 407, the interface system loads the appropriate patch information and the appropriate unused address information for the currently connected cartridge from its memory into registers.

[0056] At step 409, portable processing system 50 begins execution of the software oil the ROM of the game cartridge. At step 411, interface system 30 enters a loop to monitor whether any of the addresses received from the portable processing system on the address bus of the portable processing system match any of the patched address locations or the unused address location. This loop may continue until execution of the software is complete. If neither any of the patched addresses nor the unused ROM address is received on address bus 38, the interface system, at step 421, simply provides the data stored at the requested address of the ROM to the portable processing system. At steps 413 and 415 if one of the patched addresses is received on address bus 38, then the interface system may provide the unused address to the portable processing system on the data bus of the portable processing system. If, at steps 417 and 419, the unused ROM address was received from portable processing system 50 on address bus 38 of the portable processing system, interface system 30 may provide input from the external controls or external controller to portable processing system 50 on data bus 37.

[0057] Alternatively, instead of providing portable processing system 50 with an unused address of ROM 36 upon a request by portable processing system 50 for data stored at one of the patched locations of ROM 36, interface 33 may provide an address location in the memory of portable processing system 50. Interface 33 may store input from the external controller at the provided address location of the memory of portable processing system 50. Thus, the portable processing system 50 will retrieve input from the external controller using the memory address provided by interface 33.

[0058] As another alternative, it may not be necessary for interface 33 to patch memory locations of ROM 36. For example, interface 33 may load external controller input into the same register or memory location that is used to store built-in controller input. Thus, if a user of the portable processing system operates the portable processing system using the external controller, the input from this external controller may be retrieved from the memory location or register used to store built-in controller input. Also, if the user chooses to operate the portable processing system using the built-in controls, the portable processing system may retrieve the built-in controls input from the same memory location or register.

[0059]FIG. 5 shows one embodiment of a connection of a portable processing system (e.g., portable processing system 50) to an interface system (e.g., interface system 30). As shown in FIG. 5, portable processing system 50 includes a cartridge slot 61 through which interface system 30 connects to the portable processing system. A game cartridge 35 may be inserted into interface system 30 through a cartridge connector 63. External controller 60 also connects to interface system through an external controller connector 65 of interface system 30. Interface system 30 then allows a user to control portable processing system 50 with an external controller 60. Moreover, interface system 30 does not block the link port of portable processing system 50. External controller 60 is a controller for operating portable processing system 50 in place of the built-in controls of the portable processing system. A game pad may serve as an external controller as shown in FIG. 5. However, it should be appreciated that many other types of external controllers may be used. For example, a joystick, a wheel, a mouse, a keyboard, or any other type of external controller could be used and the invention is not limited to any particular external controller.

[0060]FIG. 6 illustrates another embodiment of a connection between an interface system (e.g., system 30) and a portable processing system (e.g., system 50) and external controls (e.g., controls 80). A mount 81 is used to support portable processing system 50. Mount 81 may include a fastener for holding portable processing system 50 on the mount. Mount 81 allows a user to operate the external controls 80 and clearly see the portable processing system video screen without having to hold the portable processing system. Alternatively, a friction fit where friction is used to fasten the objects, could be used to hold portable processing system 50 in place on mount 81.

[0061] Mount 81 may also include external controls 80 and a grip 82. Grip 82 allows a user to hold mount 81 while playing a video game. A connector 85 on mount 81 allows interface system 30 to electrically connect to mount 81 to receive input from external controls 80. Interface system 30 may connect to mount 81 using an external controller connector 87. Interface system 30 also connects to portable processing system 50 through a cartridge slot 83 using portable processing system connector 89. A game cartridge 35 may be connected to interface system 30 though cartridge connector 86. Alternatively, interface system 30 could be integrated as part of mount 181. That is, interface system 30 may, in one embodiment, be fixed to mount 181, such that portable processing system 50 may attach to mount 181 by connecting to interface system 30 and fastening to the mount.

[0062]FIG. 7 illustrates yet another way of connecting an interface system 30 to a portable processing system 50 and an external wheel controller. The wheel controller includes a wheel 70 a, external controls 70 b, which include a directional pad and buttons and external controls 70 c which may include additional buttons. Interface system 30 may connect to portable processing system 50 through a cartridge slot of portable processing system 50. Both interface system 30 and portable processing system 50 may fasten to the center of the external controller, to allow the portable processing system to be supported and viewed by a user while still using both hands to operate the wheel 70 a and external controls 70 b and 70 c. Alternatively, interface system 30 may be fixed to external controller 71. Portable processing system 50 may connect to external controller 71 by connecting to the interface system (e.g., through its cartridge slot) and fastening to external controller 71. Also, external controller 71 may include foot pedals (not shown), which may also provide external control of portable processing system 50. Similar methods of mounting portable processing system 50 on an external controller may be performed using many other types of external controllers, such as, for example, joysticks, game pads, mat pads, which are often used for dance video games or track and field games, or any other type of game controller.

[0063] In another embodiment of the invention, a device is provided for providing external control of a portable processing system. Secondary controls, also referred to as an external controller or external controls, and software executable by a portable processing system are integrated into the device. The device may also include logic for interfacing with a portable processing system and for providing input from the external controls of the device to the portable processing system. However, the device may lack a processor, a display, such as an LCD screen, and other hardware necessary to execute the software and play a video game. The device may also be provided with a connector which interfaces with a portable processing system. As such, the portable processing system may “plug-in” to the device to provide a processor, a display, and other hardware necessary to execute the software integrated into the device. The software may be stored in device 901 on, for example, a Flash MEMORY, a ROM, a PROM, an EPROM, or an EEPROM. In this manner, relatively inexpensive handheld games may be provided which use the hardware resources of a portable processing system to execute the video game software integrated into the handheld game. Additionally, the handheld game may provide specialized controls directed to the specific type of video game software to be executed by the portable processing system.

[0064] For example, FIG. 8 shows a device 901 for providing external control of a portable processing system. Device 901 is a handheld slot machine game. Device 901 includes software for playing a slot machine game and external controls for controlling the slot machine game. That is, device 901 includes a lever 903 and buttons 905 a, 905 b, and 905 c. As can be seen, these external controls are specifically designed for a slot machine game. A portable processing system 50 may “plug-in” to device 901 and connect electrically through a port, such as the cartridge connector, link port, data port, or network port, of portable processing system 50. This electrical connection allows portable processing system 50 to fetch and execute the software integrated into device 901, just as the portable processing system 50 would normally fetch and execute software from a video game cartridge.

[0065] Device 901 may cause portable processing system 50 to receive input from an external controller in a manner similar to that of the embodiment described above with respect to FIG. 3. However, because the software is provided as part of device 901, it may not be necessary to patch memory locations of the software. Instead of having software which includes pointers to the memory location or register used by the portable processing system to store built-in controller input, the software included as part of device 901 may have pointers to an unused address. Thus, device 901 may simply monitor requests from the address bus of portable processing system 50 for this unused address. When this unused address is requested by portable processing system 50, device 901 may provide input from the external controls to portable processing system 50 on the data bus of portable processing system 50.

[0066] Many other devices that operate with a portable processing system could be used according to various embodiments, and the invention is not limited to the slot machine device described above. For example, FIG. 9 shows a device 907 which is a laptop. Similar to device 901 depicted in FIG. 8, device 907 includes software, external controls, logic for interfacing with a portable processing system, logic for providing input from the external controls to the portable processing system, and a connector for electrically connecting to a portable processing system. In the example of FIG. 9, external controls 909 integrated into device 907 may include, for example, a keyboard, function buttons, and a directional pad. These controls may be used with educational games, word processing software, or any other program which is also integrated into device 901. Portable processing system 50 connects electrically to device 907 using, for example, the connector of device 907. Portable processing system 50 may be controlled by the external controls of device 907 in a similar manner as described above with respect to device 901.

[0067] It should be appreciated that many other types of devices including external controls and software could be used, and the invention is not limited to the slot machine device or the laptop device described above. For example, the device could be a fishing game with a casing shaped like a fishing rod, using a reel as the external controls and having fishing game software. The device could also be any type of gambling game, card game, sports game, racing game, electronic pet, or educational game. Examples of such games include roulette, blackjack, poker, craps, solitaire, spades, hearts, bridge, soccer games, baseball games, basketball games, football games, or golf games. Many other types of devices will occur to one of ordinary skill in the art and are intended to be within the spirit and scope of the invention.

[0068] Moreover, it should be appreciated that while the software of the device was described as being integrated into the device, it is also possible to provide software that is removable from the device, by using, for example, a removable cartridge. However, such removable cartridges may still direct the portable processing system to use input from the external controls of the device instead of the built-in controls of the portable processing system, without patching memory locations.

[0069]FIG. 10 is a flow chart illustrating operation of the device when connected to a portable processing system. At step 1001, the device and the portable processing system are powered up. At step 1003, the portable processing system begins execution of the software stored in the device. At step 1005, the device enters a loop to monitor whether the unused address of the software has been provided by the portable processing system on the address bus of the portable processing system. This loop may terminate when execution of the software is complete. If the unused address is provided on the address bus, then the device provides input from the external controls or external controller to the portable processing system on the portable processing system data bus (step 1007). Otherwise, at step 1009, the device simply provides the data at the requested address to the portable processing system on the portable processing system data bus.

[0070] Alternatively, the software may be programmed to use controller input from the standard built-in controls storage location of the portable processing system. The device may simply load external controller input into this storage location by providing the external controller input to the portable processing system on the data bus of the portable processing system. In this method, it is not necessary to monitor the address bus for an unused address to determine when to provide external controller input to the portable processing system.

[0071] Having thus described various embodiments of the present invention, additional alterations, modifications, and improvements will readily occur to those skilled in the art. Accordingly, the foregoing description is by way of example only, and is not intended to be limiting. 

What is claimed is:
 1. In a portable processing system, a method comprising: providing an external controller, the external controller being adapted to control a portable processing system; and providing for a coupling of the external controller to the portable processing system.
 2. The method of claim 1, wherein the portable processing system includes a handheld video game system.
 3. The method of claim 1, wherein the portable processing system includes a plurality of built-in controls and an internal register for storing an input received from the plurality of built-in controls and wherein the portable processing system is electrically connectable to a data storage medium, the data storage medium having stored thereon a computer program accessible and executable by the portable processing system, and wherein the method further comprises: detecting a first access request by the portable processing system for data comprising a pointer to a location at which is stored input from the plurality of built-in controls, the data being stored at a first address of the data storage medium; providing a second address of the data storage medium to the portable processing system, in response to the first access request, instead of the data stored at the first address of the data storage medium; detecting a second access request by the portable processing system for data stored at the second address of the data storage medium; and providing input data, based on information received from the external controller, to the portable processing system, in response to a second access request by the portable processing system for data stored at the second address of the data storage medium.
 4. The method of claim 3, wherein the first access request comprises a requested address of the data storage medium and the act of detecting a first access request further comprises an act of receiving the requested address from an address bus of the portable processing system.
 5. The method of claim 4, wherein the act of detecting a first access request further comprises an act of comparing the requested address and the first address of the data storage medium.
 6. The method of claim 5, further comprising an act of providing, to the portable processing system, data stored on the data storage medium in response to a third access request by the portable processing system if the third access request is not one of the group comprising the first access request and the second access request.
 7. The method of claim 3, wherein the act of providing a second address of the data storage medium further comprises providing, to the portable processing system, the second address of the data storage medium to the portable processing system on a data bus of the portable processing system.
 8. The method of claim 3, wherein the second access request comprises a requested address of the data storage medium and the act of detecting a second access request further comprises an act of receiving the requested address via an address bus of the portable processing system.
 9. The method of claim 8, wherein the act of detecting a second access request further comprises an act of comparing the requested address and the second address of the data storage medium.
 10. The method of claim 3, wherein the act of providing input from the external controller further comprises providing the input from the external controller to the portable processing system on a data bus of the portable processing system.
 11. The method of claim 1, wherein the portable processing system includes built-in controls and the method further comprises an act of causing the portable processing system to receive an input from the external controller instead of the built-in controls of the portable processing system.
 12. The method of claim 1, further comprising an act of providing a computer software program executable by the portable processing system, the computer software program, when executed, allowing a user to play a video game using the portable processing system.
 13. The method of claim 12, wherein the act of providing a computer software program further comprises an act of providing a computer software program including computer instructions for receiving input from the external controller.
 14. The method of claim 12, wherein the external controller and the computer software program are integrated into a single device and the method further comprises providing a connector on the device for connecting the external controller to the portable processing system.
 15. An apparatus comprising: an external game controller configured to transfer control signals to control a portable processing system, the external game controller having an output that provides control signal information to the portable processing system.
 16. The apparatus of claim 15, wherein the portable processing system includes a handheld video game system.
 17. The apparatus of claim 15, wherein the portable processing system includes built-in controls and the apparatus further comprises: an interface device that couples the external controller to the portable processing system and directs the portable processing system to receive control signal from the external game controller in lieu of the built-in controls of the portable processing system.
 18. The apparatus of claim 17, wherein the interface device further comprises at least one register for storing addresses of the external memory.
 19. The apparatus of claim 18, wherein the interface device further comprises first comparison means for comparing a first address received on an address bus of the portable processing system and a second address stored in the at least one register.
 20. The apparatus of claim 19, wherein the interface device further comprises means for providing a special address of the external memory on a data bus of the portable processing system in response to receiving an address stored in the at least one register on the address bus of the portable processing system.
 21. The apparatus of claim 20, wherein the interface device further comprises second comparison means for comparing an address received from the portable processing system on the address bus with the special address of the external memory.
 22. The apparatus of claim 21, wherein the interface device further comprises means for providing input received from the external controller to the portable processing system on the data bus of the portable processing system in response to receiving the special address from the address bus of the portable processing system.
 23. The apparatus of claim 15, further comprising: a memory for storing computer program instructions executable by the video system.
 24. The apparatus of claim 23, wherein the computer program instructions include instructions which, when executed by the portable processing system, cause the portable processing system to receive input from the external controller.
 25. The apparatus of claim 23, wherein the memory is a non-volatile memory.
 26. The apparatus of claim 15, wherein the external controller and the memory are integrated into a single device.
 27. The apparatus of claim 26, wherein the single device further comprises: a connector adapted for coupling to the portable processing system which, when coupled to the portable processing system, allows the portable processing system to execute instructions stored in the memory.
 28. The apparatus of claim 27, wherein the connector is adapted to connect to the portable processing system through a cartridge slot of the portable processing system.
 29. The apparatus of claim 28, wherein the connector is adapted to connect to the portable processing system through a link port connector of the portable processing system.
 30. A computer readable medium having encoded thereon computer instructions which when executed by a portable processing system perform a method comprising: causing the portable processing system to accept input from an external controller; and causing the portable processing system to process the input from the external controller.
 31. The computer readable medium of claim 30, wherein the computer instructions include an address of a register capable of storing input received from the external controller and the method further comprises an act of causing the portable processing system to access the register instead of a storage location for storing input from built-in controls of the portable processing system.
 32. The computer readable medium of claim 30, wherein the computer readable medium is integrated into a single device with the external controller
 33. The computer readable medium of claim 30, wherein the computer readable medium is removably connectable to the external controller.
 34. A method for operating a portable processing system, comprising an act of: providing a device operatively connectable to the portable processing system; providing, on the device, a data storage medium for storing a computer program executable by the portable processing system; and providing, on the device, game controls for operating the portable processing system.
 35. The method of claim 34, further comprising an act of causing the processor to receive input from the external controller in response to executing the computer program.
 36. The method of claim 34, further comprising and act of providing a connector for electrically connecting to the portable processing system
 37. The method of claim 36, wherein the act of providing a connector further comprises providing a connector connectable to the portable processing system through a cartridge slot of the portable processing system.
 38. The method of claim 37, wherein the act of providing a connector further comprises providing a connector connectable to the portable processing system through a link port connector of the portable processing system.
 39. An apparatus configured to control operation of a portable processing system comprising: a device operatively connectable to the portable processing system having: a data storage medium configured to store computer program instructions executable by the portable processing system; and an external game controller for operating the portable processing system configured to operate the portable processing system.
 40. The apparatus of claim 39, wherein the computer program instructions include instructions which, when executed by the portable processing system, cause the portable processing system to receive input from the external controller.
 41. The apparatus of claim 40, wherein the data storage medium comprises a non-volatile memory.
 42. The apparatus of claim 39, further comprising: a connector connectable to the portable processing system which, when connected to the portable processing system, allows the portable processing system to execute instructions stored on the memory.
 43. The apparatus of claim 42, wherein the connector is adapted to connect to the portable processing system through a cartridge slot of the portable processing system.
 44. The apparatus of claim 42, wherein the connector is adapted to connect to the portable processing system through a link port connector of the portable processing system.
 45. An apparatus comprising: a housing adapted to receive a portable processing system, the housing operatively connectable to the portable processing system, wherein the housing includes a computer software program executable by the portable processing system, and wherein the shape of the housing relates to a theme of the computer software program.
 46. The apparatus of claim 45, wherein the housing further includes external controls for controlling operation of the portable processing system.
 47. The apparatus of claim 46, wherein the computer software program includes computer instructions which, when executed by the portable processing system, cause the portable processing system to receive input from the external controls.
 48. An apparatus comprising: a housing adapted to receive a portable processing system, the housing forming an integral part of the portable processing system, such that at least a portion of a screen of the portable processing system is visible when the portable processing system is connected to the housing.
 49. The apparatus of claim 49, wherein the housing includes external controls for controlling the portable processing system.
 50. The apparatus of claim 49, wherein the housing includes a data storage medium configured to store computer software instructions for execution by the portable processing system.
 51. In a portable processing system having built-in controls, the portable processing system capable of receiving data from a data storage medium, the data storage medium being removably connectable to the portable processing system, a method for operating the portable processing system with an external controller electrically connected to the portable processing system, the method comprising: detecting a first access request by the portable processing system for data stored at a first address of the data storage medium; providing to the portable processing system, in response to the first access request, a second address of the data storage medium instead of the data stored at the first address of the data storage medium; detecting a second access request by the portable processing system for data stored at the second address of the data storage medium; and providing to the portable processing system, in response to a second access request by the portable processing system for data stored at the second address of the data storage medium, input from the external controller.
 52. The method of claim 51, wherein the first access request comprises a requested address of the data storage medium and the act of detecting a first access request further comprises an act of receiving the requested address from an address bus of the portable processing system.
 53. The method of claim 52, wherein the act of detecting a first access request further comprises an act of comparing the requested address and the first address of the data storage medium.
 54. The method of claim 53, further comprising an act of providing data stored on the data storage medium, in response to a third access request by the portable processing system if the third access request is not one of the group comprising the first access request and the second access request.
 55. The method of claim 51, wherein the act of providing a second address of the data storage medium further comprises providing the second address of the data storage medium to the portable processing system on a data bus of the portable processing system.
 56. The method of claim 51, wherein the second access request comprises a requested address of the data storage medium and the act of detecting a second access request further comprises receiving the requested address from an address bus of the portable processing system.
 57. The method of claim 56, wherein the act of detecting a second access request further comprises comparing the requested address and the second address of the data storage medium.
 58. The method of claim 51, wherein the act of providing input from the external controller further comprises providing the input from the external controller to the portable processing system on a data bus of the portable processing system.
 59. In a portable processing system having built-in controls, the portable processing system capable of receiving data from a data storage medium, the data storage medium being removably connectable to the portable processing system, an apparatus electrically connected to the portable processing system comprising: means for detecting a first access request by the portable processing system for data stored at a first address of the data storage medium; means for providing to the portable processing system, in response to the first access request, a second address of the data storage medium instead of the data stored at the first address of the data storage medium; means for detecting a second access request by the portable processing system for data stored at the second address of the data storage medium; and means for providing to the portable processing system, in response to a second access request by the portable processing system for data stored at the second address of the data storage medium, input from the external controller.
 60. The apparatus of claim 59, wherein the first access request further comprises a requested address of the data storage medium and the first access request is received from an address bus of the portable processing system.
 61. The apparatus of claim 60, wherein the means for detecting a first access request further comprises comparison means for comparing the requested address and the first address of the data storage medium.
 62. The apparatus of claim 61, further comprising: means for providing data stored on the data storage medium, in response to a third access request by the portable processing system if the third access request is not one of the group comprising the first access request and the second access request.
 63. The apparatus of claim 59, wherein the means for detecting a second access request further comprises means for providing the second address of the data storage medium to the portable processing system on a data bus of the portable processing system.
 64. The apparatus of claim 59, wherein the second access request further comprises a requested address received from an address bus of the portable processing system.
 65. The apparatus of claim 64, wherein the means for detecting a second address further comprises comparison means comparing the requested address and the second address of the data storage medium.
 66. The apparatus of claim 59, wherein the means for providing input from the external controller further comprises: means for providing the input from the external controller to the portable processing system on a data bus of the portable processing system.
 67. An apparatus comprising: a mount that is adapted to support a portable processing system; and external controls that are coupled to the mount and which control the portable processing system.
 68. the apparatus of claim 67, further comprising: a pistol grip coupled to the mount.
 69. The apparatus of claim 68, wherein the external controls are situated on the pistol grip.
 70. The apparatus of claim 68, wherein the mount further comprises: a connector adapted to support an interface system on the mount, the interface system capable of being coupled to the portable processing device.
 71. The apparatus of claim 69, wherein the interface system is capable of being coupled to a cartridge slot of the portable processing device. 